home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1998 September / Macworld (1998-09).dmg / Shareware World / Info / For Developers / MacZoop 1.8.3 / Required Classes / Z Headers / ZCommander.h < prev    next >
Text File  |  1998-06-11  |  2KB  |  94 lines

  1. /*************************************************************************************************
  2. *
  3. *
  4. *            MacZoop - "the framework for the rest of us"         
  5. *
  6. *
  7. *
  8. *            ZCommander.h            -- an object for handling commands
  9. *
  10. *
  11. *
  12. *
  13. *
  14. *            © 1996, Graham Cox
  15. *
  16. *
  17. *
  18. *
  19. *************************************************************************************************/
  20.  
  21. #pragma once
  22.  
  23. #ifndef __ZCOMMANDER__
  24. #define __ZCOMMANDER__
  25.  
  26. #ifndef __ZCOMRADE__
  27. #include    "ZComrade.h"
  28. #endif
  29.  
  30. #ifndef __ZOBJECTARRAY__
  31. #include    "ZObjectArray.h"
  32. #endif
  33.  
  34. class    ZCommander;
  35.  
  36. // set up streaming stuff:
  37.  
  38. DEFINECLASSID( ZCommander, 'zcmd' );
  39.  
  40.  
  41. typedef ZObjectArray<ZCommander>    ZCommanderList;    
  42.  
  43. // class def:
  44.  
  45. class    ZCommander : public ZComrade
  46. {
  47. protected:
  48.     ZCommander*        itsBoss;
  49.     ZCommanderList*    itsUnderlings;
  50.     
  51. public:
  52.     ZCommander( ZCommander* aBoss );
  53.     ZCommander();
  54.     virtual ~ZCommander();
  55.  
  56.     virtual void    HandleCommand( const short menuID, const short itemID);
  57.     virtual void    HandleCommand( const long theCommand );
  58.     virtual void    UpdateMenus();
  59.     virtual void    HandleAppleEvent(    AEEventClass aeClass, AEEventID aeID,
  60.                                         AppleEvent* aeEvt, AppleEvent* reply );
  61.  
  62.     virtual void    Idle();
  63.     virtual void    Type( const char theKey, const short modifiers );
  64.     virtual void    SendMessage( long aMessage, void* msgData );
  65.     virtual void    SendMessage( ZMessage* aMessage );
  66.     
  67.     virtual void    DoCut() { DoCopy(); DoClear(); };
  68.     virtual void    DoCopy() {};
  69.     virtual void    DoPaste() {};
  70.     virtual void    DoClear() {};
  71.     virtual void    DoSelectAll() {};
  72.     virtual Boolean CanPasteType() { return FALSE; };
  73.     
  74.     virtual ZCommander*    GetHandler() { return this; };
  75.     inline    ZCommander*    GetBoss(){ return itsBoss; };
  76.     inline    ZCommanderList*    GetUnderlings() { return itsUnderlings; };
  77.     
  78. // streaming:
  79.  
  80.     virtual void    WriteToStream( ZStream* aStream );
  81.     virtual void    ReadFromStream( ZStream* aStream );
  82.     
  83. protected:
  84.  
  85.     virtual void    AddUnderling( ZCommander* anUnderling );
  86.     virtual void    RemoveUnderling( ZCommander* anUnderling );
  87. };
  88.  
  89.  
  90. // windows and the application are derived from this. It implements a single entity in the
  91. // "chain of command". You can subclass this to make any object that can handle commands,
  92. // though more usually you will subclass windows.
  93.  
  94. #endif